package com.evan.idempotent.warpper;

import com.evan.idempotent.exception.IdempotentException;

/**
 * @Description: 包装Runnable函数
 * @Author liudeguang
 */
public interface IdempotentRunnable extends Runnable {

    /**
     * 包装
     *
     * @param key 幂等键
     * @param ex  异常
     */
    default void run(String key, IdempotentException ex) {
        runTask(key, ex);
    }

    /**
     * 任务体
     *
     * @param key 幂等键
     * @param ex  异常
     */
    public abstract void runTask(String key, IdempotentException ex);

    /**
     * 实现父类的不用方法
     */
    @Override
    @Deprecated
    default void run() {

    }
}
